package edu.ynu.hhy.architectureclass.service;

import edu.ynu.hhy.architectureclass.dao.TokenDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class TokenService {

    @Autowired
    private TokenDao tokenDao;

    private String fboxAccessToken; // 缓存 accessToken
    private String ysAccessToken;
    private LocalDateTime fboxtokenExpiryTime; // 记录 token 的过期时间
    private LocalDateTime ysTokenExpiryTime;

    public String getFBoxToken() {
        // 如果 token 未过期，直接返回缓存的 token
        if (fboxAccessToken != null && fboxtokenExpiryTime != null && LocalDateTime.now().isBefore(fboxtokenExpiryTime)) {
            return fboxAccessToken;
        }

        // 否则，重新获取 token
        String token = tokenDao.getFBoxToken();
        if (token != null) {
            fboxAccessToken = token;
            fboxtokenExpiryTime = LocalDateTime.now().plusSeconds(7200); // 根据 expires_in 动态设置
            return token;
        }

        return null;
    }

    public String getYsToken() {
        // 如果 token 未过期，直接返回缓存的 token
        if (ysAccessToken != null && ysTokenExpiryTime != null && LocalDateTime.now().isBefore(ysTokenExpiryTime)) {
            return ysAccessToken;
        }

        // 否则，重新获取 token
        String token = tokenDao.getYsToken();
        if (token != null) {
            ysAccessToken = token;
            ysTokenExpiryTime = LocalDateTime.now().plusSeconds(7200); // 根据 expiresTime 动态设置
            return token;
        }

        return null;
    }
}